#ifndef _NE_TRANSFORM_KEY_FRAME_H_
#define _NE_TRANSFORM_KEY_FRAME_H_

#include <animation/KeyFrame.h>
#include <mathematics/Quaternion.h>

namespace ne
{
    class NEAPI TransformKeyFrame : public KeyFrame
    {
        public:
            TransformKeyFrame(const AnimationTrack *parent, const real time);

            virtual void setTranslate(const Vector3 &v);
            virtual const Vector3& getTranslate() const;

            virtual void setRotate(const Quaternion &q);
            virtual const Quaternion& getRotate() const;

            virtual void setScale(const Vector3 &v);
            virtual const Vector3& getScale() const;

            virtual KeyFrame* clone(const AnimationTrack *newParent) const;

            virtual ~TransformKeyFrame();

        private:
            TransformKeyFrame();

            TransformKeyFrame(const TransformKeyFrame &keyFrame);

            TransformKeyFrame& operator = (const TransformKeyFrame &keyFrame);

        protected:
            Vector3 mTranslate;
            Quaternion mRotate;
            Vector3 mScale;
    };
}

#endif
